package gui.items;

import java.util.ArrayList;
import java.util.List;

import logique.methode.RelaxLag;
import logique.outils.Chrono;
import logique.programme.ProgrammeDeterministe;
import logique.programme.ProgrammeLineaire;

public class OperationActionLancerResolution implements OperationAction, Runnable {

	Chrono chrono;
	ProgrammeLineaire pl;
	List<AfficheTemps> listTemps = new ArrayList<AfficheTemps>();
	
	public void addListTemps(AfficheTemps afficheur) {
		listTemps.add(afficheur);
	}
	
	public void interrompre() {
		chrono.stop();
	}
	
	public boolean execute() {
		new Thread(this).start();
		return true;
	}

	public void run() {
		System.out.println("OperationActionLancerResolution - Lancer Resolution dans thread");

		chrono = new Chrono(new OperationAction(){

			public boolean execute() {
				for (AfficheTemps afficheTemps : listTemps) {
					afficheTemps.setTempsEcoule((int) chrono.getTime());
				}
				return true;
			}
			
		});
		chrono.start();
		chrono.setPause(false);


		ProgrammeDeterministe pd = ProgrammeDeterministe.creerPLAvecIG();
		RelaxLag.getInstance().setProgrammeLineaireInitial(pd);
		RelaxLag.getInstance().addContrainteARelacher(1);
		RelaxLag.getInstance().optimiser();

		System.exit(0);
		
		chrono.stop();
		
	}
	public Chrono getChrono () {
		return chrono;
	}

}
